#ifndef NWINDOW_H_
#define NWINDOW_H_

#include <ncurses.h>
#include <string>

using std::string;

/**
 * Used by NWindow objects to keep track of interesting locations.
 */
struct Point
{
    int x;
    int y;
};

/**
 * An objected oriented implementation of an NCurses window.
 */
class NWindow
{
	public:
		NWindow();
        NWindow(int startWidth, int startHeight, int startx, int starty, bool border);
        virtual void show();
        virtual void hide();
        virtual void clear();
        virtual void setWidth(int newHeight);
        virtual void setHeight(int newWidth);
        virtual void printChar(int x, int y, chtype newChar);
        virtual void printChar(Point point, chtype newChar);
        virtual void printChar(chtype newChar);
        virtual void printString(int x, int y, string newString);
        virtual void printString(Point point, string newString);
        virtual void printString(const char *newString);
		virtual ~NWindow();

    protected:
        void refresh();
        WINDOW *window;
        int x;
        int y;
        int width;
        int height;
        bool border;
        bool visible;
};

#endif /*NWINDOW_H_*/
